package com.cskaoyan.javase.oop3._2inner._5lambda._2notice;

/**
 * 注意事项：
 * 1.Lambda表达式是特殊的局部内部类，所以它访问方法的局部变量，该变量必须是final的（实际常量）。
 *
 * 2.除此之外，局部内部类，匿名内部类它们都有自己独立的作用域，能够自定义自己的成员。 但是Lambda表达式没有自身独立的作用域，不能自定义成员，和方法共用同一个作用域。
 *
 * @since 09:20
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int num = 100;
        IA ia = () -> {
            // Variable 'num' is already defined in the scope
            // int num = 100;
            System.out.println(num);
            // num = 1000;
            System.out.println("hello world!");
        };

        class A {
            int num = 100;
        }
        new IA(){
            int num = 100;
            @Override
            public void test() {
                int num = 100;
                System.out.println(num);
            }
        };
    }
}

@FunctionalInterface
interface IA {
    void test();
}
